package com.github.lwhite1.tablesaw.columns.packeddata;

import com.github.lwhite1.tablesaw.columns.DateIntervalColumn;
import com.google.common.annotations.Beta;

/**
 * EXPERIMENTAL
 */
@Beta
public abstract class DateInterval {

  // boolean operations
  abstract boolean equals(DateIntervalColumn interval);
  abstract boolean before(DateIntervalColumn interval);
  abstract boolean after(DateIntervalColumn interval);
  abstract boolean contains(DateIntervalColumn interval);
  abstract boolean containedIn(DateIntervalColumn interval);
  abstract boolean meets(DateIntervalColumn interval);

  // combination operations
  abstract DateInterval union(DateInterval interval);      // or
  abstract DateInterval intersect(DateInterval interval);  // and
  abstract DateInterval minus(DateInterval interval);      // and not
  abstract DateInterval gap(DateInterval interval);        // the difference between two intervals

}
